A host bus adapter (HBA), such as a network interface card (NIC), provides input/output (I/O) processing and physical connectivity between a host or server with another storage and/or network device (e.g., a physical network switch). Single root input/output virtualization (SRIOV) is a network interface that allows a single PCIe device to appear to be multiple separate PCIe devices in a virtual environment by offering both a plurality of physical functions (PFs) and a plurality of virtual functions (VFs), wherein the PFs are full-featured PCIe functions and the virtual functions (VFs) are “lightweight” functions that allow different virtual components (e.g., virtual machines) on the host to share the single PCIe device. A HBA in SRIOV mode is configured to have multiple PFs and VFs to provide both physical and virtual connections, respectively, between a plurality of virtual machines (VMs) running on the host to a storage or network device.
Aggregation (also referred as bonding and teaming) of communication links between the VMs (or its applications) running on the host and the storage or network device is adopted to provide increased bandwidth beyond what a single link can provide and also to provide redundancy in case of link failures. Currently, link aggregation is done by creating a bonding interface in the host OS with two or more ports participating in the link aggregation, wherein the VMs running on the host can send or receive network traffic via the bonding interface. Under such setup, if link redundancy is required for a VM with VF assigned (PCIe pass-through), at least two VFs from different PFs of the HBA must be assigned to and be bonded in the VM, which reduces the number of VFs available and thus the number of VMs that can run on the host. Furthermore, the setup may provide higher bandwidth than required for the VM, which may increase the overall cost of the host. In addition, performing link aggregation in the host OS requires extra CPU cycles for link monitoring and driving the network traffic based on the bonding algorithm configured, thus putting extra burden on the computing and networking resources of the host. Finally, some of the HBA offload features may get disabled when link aggregation is enabled. In the non-limiting example of an NIC, bonding mode such as round-robin, large receive offload (LRO) and TCP segmentation offload (TSO) are disabled for the ports participating in the bonding when bonding for link aggregation is enabled, which results in reduced throughput of the NIC. As such, it is desirable to offload the link aggregation from the host.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent upon a reading of the specification and a study of the drawings.